Julia | |
---|---|
![]() | |
Basisdaten | |
Paradigmen: | Multiparadigma (prozedural, funktional, objektorientiert, Metaprogrammierung) |
Erscheinungsjahr: | 2012 |
Designer: | Jeff Bezanson, Stefan Karpinski, Viral B. Shah, Alan Edelman |
Entwickler: | Jeff Bezanson, Stefan Karpinski, Viral B. Shah u. a.[1][2] |
Typisierung: | dynamisch mit Typinferenz |
Wichtige Implementierungen: | Julia JIT Compiler |
Beeinflusst von: | C, MATLAB, Scheme, Lisp, Dylan, Perl, Python, R, Ruby, Lua,[3] Mathematica |
Betriebssystem: | Linux, macOS, FreeBSD, Windows |
Lizenz: | MIT-Lizenz, GPL, LGPL, BSD |
The Julia Language |
Julia ist eine höhere Programmiersprache, die vor allem für numerisches und wissenschaftliches Rechnen entwickelt wurde und auch als Allzweck-Programmiersprache verwendet werden kann, bei gleichzeitiger Wahrung einer hohen Ausführungsgeschwindigkeit.[4][5][6][7][8] Die Syntax erinnert stark an Matlab, wie auch an andere technische Programmiersprachen. Der Compiler wurde in C, C++ und Scheme geschrieben; die Standardbibliothek ist in Julia selbst geschrieben. Die Programmiersprache, deren Entwicklung 2009 begann, wurde im Februar 2012 als Open Source veröffentlicht.
Die Ausführungsgeschwindigkeit liegt im Bereich von C und Fortran, wodurch sich Julia gegenüber anderen wissenschaftlichen Sprachen wie MATLAB, GNU Octave oder R deutlich absetzt. Charakterisiert wird das Design der Sprache durch ein Typsystem, das parametrisierte Typen erlaubt, eine dynamische Programmierumgebung und Multimethoden als zentrales Paradigma. Julia erlaubt paralleles und verteiltes Ausführen von Programmen und den direkten Aufruf von C- und Fortran-Bibliotheken. Julia enthält standardmäßig einen Garbage Collector[9] und effiziente Implementierungen für Operationen mit Gleitkommazahlen und zur linearen Algebra, zur Generierung von Zufallszahlen und zur Verarbeitung regulärer Ausdrücke.
Die Entwicklung erfolgte am MIT; Stefan Karpinski, Viral Shah und Jeff Bezanson erhielten dafür den J. H. Wilkinson Prize for Numerical Software für 2019.
Mit Hilfe eines Pakets, das alle Julia-Funktionen unterstützt, kann zu ausführbaren Binärdateien kompiliert werden. Ein anderes Paket erzeugt besonders kleine ausführbare Binärdateien für Computer oder sogar Mikrocontroller mit 2 KB RAM. Diesen fehlt dann jedoch die Laufzeitumgebung und damit Funktionen wie der Garbage Collector und das Threading. Mit Binärpaketen muss aber kein Quellcode verteilt werden.